package org.taskexecution.taskexecution.application.scheduledTask;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cephr.accountcenter.infrastructure.presistent.po.scheduledTask.TaskSchedule;
import com.cephr.accountcenter.infrastructure.presistent.vo.TaskScheduleVO;
import com.cephr.accountcenter.userinterface.request.taskSchedule.TaskScheduleQueryDTO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author Lydond
 * @description:
 * @create_date: 2025/10/20-15:12
 */
public interface TaskScheduleService extends IService<TaskSchedule> {
    /**
     * 查找到期任务
     * @param now 当前时间
     * @param limit 最大数量
     * @return 任务列表 TaskSchedule
     */
    List<TaskSchedule> findDueTasks(LocalDateTime now, int limit);

    /**
     * 锁定任务
     * @param scheduleId
     * @return
     */
    boolean lockTask(Long scheduleId);


    /**
     * 创建任务
     * @param taskKey 任务标识
     * @param taskParams 任务参数
     * @param scheduledExecTime 计划执行时间
     * @param businessId 业务ID
     * @return 任务ID
     */
    Long createTask(String taskKey, Object taskParams, LocalDateTime scheduledExecTime, String businessId,String ticketId);

    /**
     * 查询任务
     * @param taskScheduleQueryDTO 任务标识
     * @return 任务列表 TaskSchedule
     */
    List<TaskScheduleVO> queryTasks(TaskScheduleQueryDTO taskScheduleQueryDTO);
}

